﻿// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;

namespace Azure.ResourceManager.Grafana.Models
{
    public static partial class ArmGrafanaModelFactory
    {
        /// <summary> Initializes a new instance of <see cref="Models.ManagedGrafanaProperties"/>. </summary>
        /// <param name="provisioningState"> Provisioning state of the resource. </param>
        /// <param name="grafanaVersion"> The Grafana software version. </param>
        /// <param name="endpoint"> The endpoint of the Grafana instance. </param>
        /// <param name="publicNetworkAccess"> Indicate the state for enable or disable traffic over the public interface. </param>
        /// <param name="zoneRedundancy"> The zone redundancy setting of the Grafana instance. </param>
        /// <param name="apiKey"> The api key setting of the Grafana instance. </param>
        /// <param name="deterministicOutboundIP"> Whether a Grafana instance uses deterministic outbound IPs. </param>
        /// <param name="outboundIPs"> List of outbound IPs if deterministicOutboundIP is enabled. </param>
        /// <param name="privateEndpointConnections"> The private endpoint connections of the Grafana instance. </param>
        /// <param name="autoGeneratedDomainNameLabelScope"> Scope for dns deterministic name hash calculation. </param>
        /// <param name="monitorWorkspaceIntegrations"> GrafanaIntegrations is a bundled observability experience (e.g. pre-configured data source, tailored Grafana dashboards, alerting defaults) for common monitoring scenarios. </param>
        /// <param name="enterpriseConfigurations"> Enterprise settings of a Grafana instance. </param>
        /// <param name="grafanaConfigurationsSmtp"> Server configurations of a Grafana instance. </param>
        /// <param name="grafanaPlugins"> Installed plugin list of the Grafana instance. Key is plugin id, value is plugin definition. </param>
        /// <param name="grafanaMajorVersion"> The major Grafana software version to target. </param>
        /// <returns> A new <see cref="Models.ManagedGrafanaProperties"/> instance for mocking. </returns>
        [Obsolete("This method is obsolete and will be removed in a future release.", false)]
        [EditorBrowsable(EditorBrowsableState.Never)]
        public static ManagedGrafanaProperties ManagedGrafanaProperties(GrafanaProvisioningState? provisioningState, string grafanaVersion, string endpoint, GrafanaPublicNetworkAccess? publicNetworkAccess, GrafanaZoneRedundancy? zoneRedundancy, GrafanaApiKey? apiKey, DeterministicOutboundIP? deterministicOutboundIP, IEnumerable<string> outboundIPs, IEnumerable<GrafanaPrivateEndpointConnectionData> privateEndpointConnections, AutoGeneratedDomainNameLabelScope? autoGeneratedDomainNameLabelScope, IEnumerable<MonitorWorkspaceIntegration> monitorWorkspaceIntegrations, EnterpriseConfigurations enterpriseConfigurations, Smtp grafanaConfigurationsSmtp, IDictionary<string, GrafanaPlugin> grafanaPlugins, string grafanaMajorVersion)
        {
            throw new NotSupportedException("This method is obsolete and will be removed in a future release.");
        }
    }
}
